package com.easthome.controller;

import com.easthome.common.RespResult;
import com.easthome.entity.Manager;
import com.easthome.entity.UserInfo;
import com.easthome.service.GoodsService;
import com.easthome.service.UserService;
import com.easthome.util.ImageVerificationCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.IOException;

/**
 * @author cxiaoy
 * @Date 2022/10/18 10:04
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/loginM")
    public RespResult loginM(@RequestBody Manager manager){
       Manager manager1 = userService.loginM(manager);
        System.out.println(manager1+"管理员");
        if(manager1!=null){
            return RespResult.success(manager1);
        }else{
            return new RespResult("用户名或密码错误","1001",null);
        }

    }


    @RequestMapping("/login")
    public RespResult login(@RequestBody UserInfo user, HttpSession session){
        System.out.println("login..."+user);
        UserInfo userInfo = userService.login(user);
        System.out.println(userInfo);
        //如果userInfo不为空就算登录 成功
        if(userInfo!=null){
            session.setAttribute("user",userInfo);
            return RespResult.success();
        }else{
            return new RespResult("用户名或密码错误","1001",null);
        }
    }

    @RequestMapping("/checkUsername/{userName}")
    public RespResult checkUsername(@PathVariable String userName){
        System.out.println("checkUsername...."+userName);//接前端的值
        //去数据库处理
        boolean flag = userService.checkUsername(userName);
        if(flag){
            return new RespResult("该用户名已注册","1002",null);
        }else{
            return RespResult.success();
        }
    }

    @RequestMapping("/yzm")
    public void yzm(HttpSession session, HttpServletResponse resp) throws IOException {
        System.out.println("yzm....");
        /*
            1.生成验证码
            2.把验证码上的文本存在session中
            3.把验证码图片发送给客户端
            理解：
                该工具类，先生成了一个 随机验证码的字符串，然后，按照这个码生成了一个图片
                其中，字符串 存session中了，图片返给前端了。
                我们最终需要做的，是较验处理，检查 前端用户传过来的验证码 和 session的text进行比较
        */
        ImageVerificationCode ivc = new ImageVerificationCode();     //用验证码类，生成验证码类对象
        BufferedImage image = ivc.getImage();  //获取验证码
        session.setAttribute("text", ivc.getText()); //将验证码的文本存在session中
        ivc.output(image, resp.getOutputStream());//将验证码图片响应给客户端
    }

    @RequestMapping("/register")
    public RespResult register(@RequestBody UserInfo user,@RequestParam String yzm,@SessionAttribute String text){
        System.out.println("register..."+user+","+yzm+","+text);
        //判断一下验证码是否正确。如果正确，去后台。
        //我们需要拿到session中的"text"的值。
        if(yzm.equalsIgnoreCase(text)){
            System.out.println("可以注册");
            int r = userService.register(user);
            return RespResult.success();
        }else{
            return new RespResult("验证码有误","1003",null);
        }
    }

    @RequestMapping("/getSessionUser")
    public RespResult getSessionUser(@SessionAttribute(required = false) UserInfo user){//从session中获取 key值为user的数据
        System.out.println("getSessionUser....");
        return RespResult.success(user);
    }

}
